This invention relates generally to data storage and retrieval and more particularly to shift registers having data stored at selective locations in parallel and then read out serially.
Matrix printers compose records or characters by recording discrete bits or fragments at appropriate locations. Examples of these are ink jet, laser, electroerosion, electrolytic or wire printers. These machines require a large number of digital control and data signals, since each recorded mark requires a data bit of information and various clocking and gating pulses. Data manipulation and transmission become even more difficult and complex for the higher quality of printers which use greater pel densities (print elements per unit area) or for high recording rates.
In some matrix printers, particularly certain ink jet types, the linear array of marking devices has a length that is sufficient to simultaneously record the equivalent of several print lines during a single sweep of the print head across the recording medium. This relatively wide marking band permits the recording of marks or characters at nearly any point within the length of the array. Assuming that the print head moves relative to the recording medium in the conventional sense, printing may occur at different numbers of lines per inch or even be controlled to record non-constrained graphics. Characters do not necessarily appear in a fixed vertical location even for a given standard format. The character position differences must be provided for in accommodating upper and lower case lettering, subscripts and superscripts, and overstruck characters. That is to say, a character must be able to be placed anywhere within the vertical recording band of the print head during its movement. The actual position of the character will be defined by some base line or starting address.
The information which describes a character to be printed is contained in a unit usually identified as a character generator. The character generator contains all of the bytes of binary data required for each character to be printed and may contain the characters of multiple fonts and special characters. If the data for each character are envisioned as being a matrix of binary bits in which each column is a byte or plurality of data bits, and several characters are to be printed concurrently, then it will be seen that many bytes of data are retrieved from the character generator to supply data for a single column of marks to the print head. Each marking device can then be controlled as to whether it will produce a mark. Data bytes for each character are usually not retrieved from the character generator in the vertical order of appearance to fill the control latches for the marking devices, and must be rearranged to appear at the proper position at the time printing occurs. Therefore, the data bytes must be rearranged and placed in the proper latches for the instant of printing.
Heretofore, when character generator data has been retrieved, it has either been on a fixed base line for each print line or the preliminary organization has required extensive transfer of data into temporary or patch buffers to permit orderly withdrawal in sequence. The previous techniques have required complex and expensive circuits, and greater transfer time for transmitting each quantum of recording data since data has been transferred serially.